package com.homework.test1;

public class MyArrayList implements Touchable{
    private Object[] all = new Object[2];
    private int total;

    //1.用于添加一个元素到当前容器中，如果数组all已满，就扩容为原来的2倍
    public void add(Object element){
        if (total >= all.length){
            all = new Object[all.length * 2];
        }
        all[total++] = element;
    }
    //2.如果index<0或index>=total就打印“没有这个元素”并返回，否则删除index位置的元素
    public void remove(int index){
        if (index < 0 || index >= total){
            System.out.println("没有这个元素");
        }
        System.arraycopy(all, index + 1, all, index, total - index);
        all[--total] = null;
    }
    //3.如果index<0或index>=total就打印“没有这个元素”并返回，否则就替换index位置的元素为value
    public void set(int index, Object value){
        if (index < 0 || index >= total){
            System.out.println("没有这个元素");
        }
        all[index] = value;
    }
    //4.如果index<0或index>=total就打印“没有这个元素”并返回null，否则返回index位置的元素
    public Object get(int index){
        if (index < 0 || index >= total){
            System.out.println("没有这个元素");
        }
        return all[index];
    }
    //5.让类MyArrayList实现Touchable接口，并重写Selector select()方法，返回内部类MySelector的对象

    @Override
    public Selector select() {
        return new MySelector();
    }

    //6.在类MyArrayList中声明private的内部类MySelector，实现Selector接口
    private class MySelector implements Selector{
        private int cursor;
        @Override
        public boolean hashNext() {
            return cursor != total;
        }

        @Override
        public Object next() {
            return all[cursor++];
        }
    }
}
